iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1
DevOps

不想吃土嗎?就利用開源軟體打造CICD Pipeline吧!系列 第 3

Day 3: 我不管!版本管理就是要用Git!

  • 分享至 

  • xImage
  •  

版本管理系統

昨天講過,版本管理的重點是協調多人之間的開發流程,所以在此不再重複講解版本管理的重要性。在此亦因為系列文章的篇幅關係,亦不會對不同的版本系統進行分析及討論。本篇會主要討論一套比較多人使用的版本管理系統 – Git。

Git最初是用於Linux核心開發的版本控制工具,它採用了分散式版本庫的作法,因此即使没有伺服器,亦可以對開發代碼進行版本控制。Git會把檔案的更改記錄保存,因此有需要的時候可以復原到以前的狀態,亦可以追蹤檔案中的差異。而當有需要提交(Commit)檔案到伺服器時,如果檔案跟伺服器的版本有衝突,亦會對提交者發出警告,避免覆蓋了其他人編輯的內容。

Git的概念

版本記錄

當你需要為程序增加一些新功能的時候,通常都會在許多不同的檔案中進行修改。而當每一次修改完成後,我們會在Git中進行一次Commit,提交修改完成後的代碼。版本系統此時就會記錄低以下的資訊:

  • 修改的內容
  • 修改人
  • 修改時間
  • 修改資訊(由修改人提供)

每一個改動,Git都會以「行」作為單位去對比改動內容。

分支概念

當需要增加功能的時候,我們可以利用分支(Branch)及合併(Merge)的功能,去進行我們的開發。這樣開發不同的功能期間,就不會互相干擾。直到新功能測試完成,才合併到主線上,再部署到不用的環境中。

https://ithelp.ithome.com.tw/upload/images/20220915/20152012nhvZTiNs79.png
(圖片擷取自網絡)

而在CICD Pipeline中,我們亦可以利用特殊的分支,去觸發不同環境的自動化部署。

Git的安裝

由於本人使用Mac電腦,接下來的日子中,大部份安裝步驟都會以Mac電腦作為教學內容。如果閣下的Mac電腦中未有安裝Homebrew這個工具,建議先進行安裝,因為Homebrew有著管理及下載不同套件的功能,可以減省不少安裝上的不便。

Homebrew的安裝

Apple Silicon CPU在進行Homebrew安裝時,必須使用官網提供的Alternative Installs,這裡進行一次簡單的教學。

先在Terminal中運行以下的指令下載Homebrew套件。

git clone https://github.com/Homebrew/brew homebrew

然後運行以下指令進行安裝。

eval "$(homebrew/bin/brew shellenv)"
brew update --force --quiet
chmod -R go-w "$(brew --prefix)/share/zsh"

然後嘗試運行Homebrew查看安裝是否成功。

brew -v

如果能夠看見類似以下內容就代表安裝成功。

Homebrew 3.5.10
Homebrew/homebrew-core (git revision 8aff02f1f3e; last commit 2022-09-02)

安裝Git

當順利安裝Homebrew以後,安裝Git的過程就會很簡單。只需要運行以下的指令

brew install git

然後等待Terminal跑完所有訊息。

運行以下指令,如果成功執行,安裝就完成了。

git --version

Git的使用

初始設定

由於Git會記錄程式碼的修改者,所以開始使用前,必須登錄你的名字和電郵地址。

在Terminal中輸入以下的指令。

git config --global user.name "Your Name" # 你的名字
git config --global user.email "Your Email" # 你的電郵

利用以下指令確認設定內容。

git config --list

如果能夠成功看到下列內容,代表設定成功。

user.name= [你的名字]
user.email= [你的電郵]

https://ithelp.ithome.com.tw/upload/images/20220915/201520129E1QkahsTj.png

Git的使用

建立一個新的Git專案

建立一個新專案的時候,我們需要初始化一個新的Git專案去管理以後的程式碼變更。

首先,建立一個新的資料夾(e.g. ~/helloworld)。然後用Terminal進入到新建立的資料夾中,然後運行以下的指令。

git init

如果成功運行後,運行以下的指令。

ls -a

如果發現資料夾中多出了一個.git的檔案,代表Git專案已經初始化成功。

進行一個新Commit

首先,我們在專案中新增一個檔案,代表我們開發過程中新增的程式碼。

然後在提交前,我們先在Terminal中運行以下指令。

git status

然後應該會得到如下的返回。
https://ithelp.ithome.com.tw/upload/images/20220915/20152012JV94FZmrje.png
這個指令可以讓我們看到當前Git專案中的狀態。

  • On branch master: 當前正在使用Master分支進行開發。
  • No commits yet: 當前分支未有任何Commit
  • Untracked files: …. helloworld.txt: 我們新增的helloworld.txt未有被Git專案追蹤

為了讓新增的檔案提交到Git專案中,運行以下的指令。

git add .
  • add .: 把所有檔案加入到準備提交的內容中,如果你要選擇性提交的話,也可以輸入檔案的名稱。

然後再運行以下指令。

git commit -m "Init Hello World Project"
  • commit: 正式進行提交
  • -m "Init Hello World Project": 是次提交的資訊,雙引號中可以輸入你想提交的關於這個提交的簡短開發資訊

完成!你已經學會如何使用Git進行版本管理了!

把本機的文件發布到公用的Repository(儲儲庫)中

雖然Git可以讓大家在本機進行開發,但當一個專案需要多於一位開發人員的時候,就必須有一條公用的Repository去同步大家的開發內容。

市面上有很多免費的SaaS軟件支援Git的版本管理系統,最有名的如GitLab、GitHub和Bitbucket等。這次我會以我慣用的GitLab作為範例。

首先,建立你的個人GitLab帳戶。因為這個部份比較簡單的關係,這裡會略過GitLab的帳戶註冊流程。然後在GitLab的目錄中,按下Create new project,建立一個新的專案。
https://ithelp.ithome.com.tw/upload/images/20220915/20152012Stj7osfQam.png

按下Create blank project
https://ithelp.ithome.com.tw/upload/images/20220915/20152012RxGz4UGdFK.png

輸入你的專案名稱,其他設定可按需要更改,此處不作額外說明。然後按下Create project
https://ithelp.ithome.com.tw/upload/images/20220915/20152012IBULKG4gYR.png

專案成功建立後,應該可以找到一個Clone的按鈕。按下然後在當中找到Clone with HTTPS的部份,然後Copy下Git專案的URL。
https://ithelp.ithome.com.tw/upload/images/20220915/201520128z6OeTQdr8.png

回到Terminal,輸入以下指令。

git remote add origin {你的專案URL}
  • remote add: 增加一個remote的Git repository
  • origin: remote的簡短名稱,因為一些特殊情況可能需要使用多於一條remote專案,這個名字可以方便分辨在使用哪一條remote repository
  • URL: 剛剛Git專案的URL,可以使用你剛剛新建的專案連結

然後,我們將本機的master branch同步到remote的專案中。

git push -u origin master

這裡應該不用多解釋吧?就是把master branch的內容pushorigin這個remote repository中。

如果是第一次push的話,你需要輸入你的帳戶和密碼。成功後,你會見到類似以下的畫面。
https://ithelp.ithome.com.tw/upload/images/20220915/20152012ZeaDi6YtoX.png

這樣你就成功將你的開發內容發布到Repository中,其他小伙伴就可以透過此共用的Git專案去跟你同步大家的開發內容。

小結

本章只是簡單介紹一下如何使用Git的基本功能。其實Git在今天已經是一個比較流行的管理工具,其中提供的功能可以讓開發更加容易管理及協調。因此學會Git的運作,也算是DevOps概念中的基本功。本章篇幅所限,未能更深入去講解Git的深入使用方式,建議大家可以多作了解,讓你管理源碼的時候更加快捷方便。

現在,我們有了存放原始碼的地方,我們明天就講解一下持續整合的工具吧!

題外話

這篇寫著寫著就有點太長了,然後很多想講的內容好像都没有講到。明天起我應該會把內容分開來講解,不然這個文字量會讓我崩潰的⋯⋯

另外,有關注本系列的友人跟小弟說,可能由於本人是香港人的關係,文章內的用語跟台灣慣常使用的字眼有些許出入。如果有看不明白的朋友歡迎隨時提出,使我們能夠更好地交流啊!


上一篇
Day 2: 甚麼是CICD Pipeline?能吃嗎?
下一篇
Day 4: CICD Pipeline中的指揮家!持續整合工具
系列文
不想吃土嗎?就利用開源軟體打造CICD Pipeline吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言